package com.qf.controller;

import com.qf.config.RabbitMQConfig;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

/**
 *
 * 发送延迟消息
 * @author lixu
 */
@RestController
@RequestMapping("/mq")
public class SendDelayMessageController {


    @Autowired
    private RabbitTemplate rabbitTemplate;
    /**
     * 基于死信的延迟消息
     */
    @GetMapping("/sendDeadLetter")
    public String sendDeadLetter(){

        rabbitTemplate.convertAndSend(
                RabbitMQConfig.NORMAL_EXCHANGE,
                RabbitMQConfig.NORMAL_ROUTINGKEY,"我是基于死信的延迟消息内容",
                message -> {
                    //设置延迟的时间   15s   毫秒    局部设置
                    message.getMessageProperties().setExpiration("15000");// 过期队列
                    System.out.println("发消息的时间:"  + new Date());
                    return message;
                });
        return "OK";

    }
    /**
     * 基于插件的的延迟消息
     */
    @GetMapping("/sendDelayedMessage")
    public String sendDelayedMessage(){

        rabbitTemplate.convertAndSend(
                RabbitMQConfig.DELAY_EXCHANGE,
                "haha.hhehe","我是基于插件的延迟消息内容",
                message -> {
                    //设置延迟的时间   15s   毫秒    局部设置
                    message.getMessageProperties().setDelay(15*1000);// 延迟的时间
                    System.out.println("发消息的时间:"  + new Date());
                    return message;
                });
        return "OK";

    }

}
